#!/bin/bash

# 设置颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 获取脚本所在目录的绝对路径
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

# 输出带颜色的信息
info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 停止指定端口的服务
stop_service() {
    local port=$1
    local service_name=$2
    local log_file="${SCRIPT_DIR}/${service_name}/$(echo ${service_name} | tr '前后' 'fb')end.log"
    
    if lsof -i :$port > /dev/null 2>&1; then
        local pid=$(lsof -t -i:$port)
        if [ ! -z "$pid" ]; then
            info "正在停止${service_name}服务(PID: $pid)..."
            kill $pid
            sleep 2
            
            if lsof -i :$port > /dev/null 2>&1; then
                warn "${service_name}服务未能正常停止，尝试强制终止..."
                kill -9 $pid
                sleep 1
            fi
            
            if ! lsof -i :$port > /dev/null 2>&1; then
                info "${service_name}服务已停止"
                # 清理日志文件
                if [ -f "$log_file" ]; then
                    info "清理${service_name}服务日志文件..."
                    rm "$log_file"
                fi
            else
                error "${service_name}服务停止失败"
            fi
        fi
    else
        info "${service_name}服务未运行"
    fi
}

# 主函数
main() {
    info "开始停止排班系统服务..."
    info "项目根目录: ${SCRIPT_DIR}"
    
    # 停止前端服务
    stop_service 5173 "前端"
    
    # 停止后端服务
    stop_service 8080 "后端"
    
    info "所有服务已停止"
}

# 运行主函数
main 